package eventx

type Handler func(event *Event) error

type Event struct {
	id int
	// 优先级
	priority int
	// 处理函数
	handler Handler
	//
	handlerKey string
	// 删除标记
	// 为了避免事件处理函数中触发删除事件操作导致的问题
	isRemoved bool
	// 是否执行一次
	isOnce bool
	// 监听时赋予的参数
	OnParams []interface{}
	// 触发时赋予的参数
	DispatchParams []interface{}
	// 事件的类型
	Kind string
	//
	dispatcher *Dispatcher
}

func (event *Event) String() string {
	return "Listener[" + event.Kind + "]"
}

func (event *Event) Host() interface{} {
	return event.dispatcher.host
}

func (event *Event) Reset() {
	event.handler = nil
	event.OnParams = []interface{}{}
	event.DispatchParams = []interface{}{}

}

func (event *Event) Off() {
	event.dispatcher.Off(event)
}
